# 变量的作用域: 数据生效的范围, 根据作用域的范围不同,可以将变量划分为两类  局部变量和全局变量
# 全局变量: 在文件中顶格书写,可以在函数内和函数外使用的变量
# 局部变量: 在函数体内定义的,只能在定义函数的函数体中使用的变量

# 全局变量: 作用范围,是从定义位置开始,无论函数体内还是函数体外都可以使用的变量
# 全局变量时在函数体外部定义的,一般是顶格书写.
age = 18


def func1():
    # 全局变量,可以再函数体内部使用
    print(f'小明今年{age}岁了')


func1()

# 全局变量, 也可以在函数体外部使用
print(f'小芳今年也{age}岁了')

print('--------------------------------')
# 局部变量: 作用范围是从函数体内的定义位置开始,到函数体结束位置, 在这个范围内可以使用局部变量,出了函数则变量销毁.

def func2():
    weight = 50
    # 局部变量可以再定义该函数的函数体内部使用
    print(f'张大妈今年{weight}kg了')

func2()

print('--------------------------------')
def func3():
    # NameError: name 'weight' is not defined
    # 局部变量不能再其他函数体中使用
    print(f'李大妈今年也{weight}kg了')

# func3()

# NameError: name 'weight' is not defined
# 局部变量,不能在函数体外部使用
# print(f'赵大妈今年也{weight}kg了')

# 注意事项: 在python中,变量的作用域只和在函数体内部还是外部有关,和缩进无关,
# 所以循环体和分支语句的代码块中的变量如果在函数体外定义则是全局变量,在函数体内定义则为局部变量

